libxl: Allow multiple USB devices on HVM domain creation
authorGeorge Dunlap <george.dunlap@eu.citrix.com>
Tue, 2 Apr 2013 14:11:33 +0000 (14:11 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Mon, 8 Apr 2013 17:00:29 +0000 (18:00 +0100)
commitac16730d0339d41fd7d129a5cb2d40ed67a303d9
treed167d3b1e09737a3a6341fa44500a424384ddca5
parent0e6086a7de36e539d54eb82e61cf94e7f5363c02
libxl: Allow multiple USB devices on HVM domain creation

This patch allows an HVM domain to be created with multiple USB
devices.

Since the previous interface only allowed the passing of a single
device, this requires us to add a new element to the hvm struct of
libxl_domain_build_info -- usbdevice_list.  For API compatibility, the
old element, usbdevice, remains.

If hvm.usbdevice_list is set, each device listed will cause an extra
"-usbdevice [foo]" to be appended to the qemu command line.

Callers may set either hvm.usbdevice or hvm.usbdevice_list, but not
both; libxl will throw an error if both are set.

In order to allow users of libxl to write software compatible with
older versions of libxl, also define LIBXL_HAVE_BUILDINFO_USBDEVICE_LIST.
If this is defined, callers may use either hvm.usbdevice or
hvm.usbdevice_list; otherwise, only hvm.usbdevice will be available.

as applied:
 - Fix whitespace errors -iwj
v3:
 - Duplicate functionality in both "new" and "old", since we're not
   unifying the two anymore.
v2:
 - Throw an error if both usbdevice and usbdevice_list are set
 - Update and clarify definition based on feedback
 - Previous patches means this works for both traditional and upstream

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl.h
tools/libxl/libxl_dm.c
tools/libxl/libxl_types.idl